package jmine.tec.web.wicket.component.command.img;

import java.io.Serializable;

import jmine.tec.web.wicket.component.command.Command;

import org.apache.wicket.ResourceReference;
import org.apache.wicket.markup.html.link.AbstractLink;

/**
 * Representa um Comando que é exibido como imagem que pode ser adicionado ao painel de comandos.
 * 
 * @author Rafael Volpato
 * @date Aug 2, 2011
 */
public interface ImageCommand extends Command {

    /**
     * Retorna o icone que deve ser exibido no botão (associado a ação).
     * 
     * @return {@link ResourceReference} do icone.
     */
    ResourceReference getImage();

    /**
     * Returns the markup id prefix for all commands
     * 
     * @return string
     */
    String getMarkupIdPrefix();

    /**
     * Cria uma nova instancia de um componente do tipo {@link AbstractLink}.
     * 
     * @param id id do componente
     * @param commandParam parametro do comando a ser executado
     * @return nova instancia de um componente do tipo {@link AbstractLink}
     */
    AbstractLink createLinkComponent(String id, Serializable commandParam);
}
